﻿using System;
using System.Collections.Generic;
using System.Web.UI;
using System.Web.UI.WebControls;
using vudu.Logica.Clases;

namespace vudu.PaginasWeb.G9Reporte
{
    public partial class ReporteMostrarAlumno : System.Web.UI.Page
    {
        public static List<Evaluacion> notasConsultadas = new List<Evaluacion>();
        Logica.Clases.Reporte reporte = new Logica.Clases.Reporte();
        public static String seleccion;
        public int seccion;

        /// <summary>
        /// Se carga la pagina
        /// </summary>
        protected void Page_Load(object sender, EventArgs e)
        {
            //se valida que el usuario sea un profesor sino se regresa a la pagina de inicio
            string miRol = (string)Session["rol"];

            if (miRol != "Profesor")
                Response.Redirect("../G3AccesoSistema/InicioSistema.aspx");



            // Cuando la pagina se recarga se vuelven a cargar las materias
            if (!Page.IsPostBack)
            {
                //se carga la informacion del profesor
                Profesor miProfe = new Profesor();
                miProfe = (Profesor)Session["Usuario"];
                Label1.Text = "Profesor(a): " + miProfe.Nombre + " " + miProfe.Apellido;
                Label2.Text = ReporteSeleccion.nombreMateria;
                LlenarCabecerasTabla();
                CargarAlumnos();
            }

        }

        /// <summary>
        /// Se llenan los encabezados de la tabla
        /// </summary>
        public void LlenarCabecerasTabla()
        {
            int i = 0;
            seleccion = ReporteSeleccion.seccionSeleccionada;
            String aux = seleccion.Substring(1, seleccion.Length - 1);
            String opcion = seleccion.Substring(0, 1);
            seccion = int.Parse(seleccion);

            //se crea un nuevo registro para la tabla
            TableRow registroTabla = new TableRow();
            TablaHorario.Rows.Add(registroTabla);

            //se crea una celda para esta tabla.
            TableCell celdaTabla = new TableCell();
            celdaTabla.Width = 150;
            celdaTabla.Font.Bold = true;
            celdaTabla.HorizontalAlign = HorizontalAlign.Center;
            registroTabla.Cells.Add(celdaTabla);

            //se crean celdas con los encabezados
            System.Web.UI.WebControls.Label labelCabecera = new Label();
            labelCabecera.Text = "Cédula";
            celdaTabla.Controls.Add(labelCabecera);

            celdaTabla = new TableCell();
            celdaTabla.Width = 200;
            celdaTabla.Font.Bold = true;
            celdaTabla.HorizontalAlign = HorizontalAlign.Center;
            registroTabla.Cells.Add(celdaTabla);
            labelCabecera = new Label();
            labelCabecera.Text = "Nombre";
            celdaTabla.Controls.Add(labelCabecera);

            celdaTabla = new TableCell();
            celdaTabla.Width = 200;
            celdaTabla.Font.Bold = true;
            celdaTabla.HorizontalAlign = HorizontalAlign.Center;
            registroTabla.Cells.Add(celdaTabla);
            labelCabecera = new Label();
            labelCabecera.Text = "Apellido";
            celdaTabla.Controls.Add(labelCabecera);

            //se consultan las notas de los alumnos de la seccion
            notasConsultadas = reporte.ConsultarNotas(seccion);

            //se cargan los encabezados de las evaluaciones
            while (i < notasConsultadas.Count)
            {
                celdaTabla = new TableCell();
                celdaTabla.Width = 250;
                celdaTabla.Font.Bold = true;
                celdaTabla.HorizontalAlign = HorizontalAlign.Center;
                registroTabla.Cells.Add(celdaTabla); 
                labelCabecera = new Label();
                labelCabecera.Text = notasConsultadas[i].Nombre + " " + notasConsultadas[i].Porcentaje +"%";
                celdaTabla.Controls.Add(labelCabecera);
                i++;
            }

            if (notasConsultadas.Count != 0)
            {
                celdaTabla = new TableCell();
                celdaTabla.Width = 250;
                celdaTabla.Font.Bold = true;
                celdaTabla.HorizontalAlign = HorizontalAlign.Center;
                registroTabla.Cells.Add(celdaTabla);
                labelCabecera = new Label();
                labelCabecera.Text = "Definitiva";
                celdaTabla.Controls.Add(labelCabecera);
            }

            if (notasConsultadas.Count.Equals(0))
            {
                Label6.Text = "No hay evaluaciones asignadas";
                Label6.ForeColor = System.Drawing.Color.Red;
            }
        }

        /// <summary>
        /// Se cargan los alumnos y sus notas en la tabla
        /// </summary>
        public void CargarAlumnos()
        {
            //se consultan las notas y los estudiantes de la seccion
            notasConsultadas = reporte.ConsultarNotas(seccion);
            List<Estudiante> estudiantes = reporte.ConsultarEstudiantes(seccion);
            int i = 0;

            if (estudiantes.Count.Equals(0))
            {
                Label5.Text = "No hay alumnos inscritos";
                Label5.ForeColor = System.Drawing.Color.Red;
                TablaHorario.Visible = false;
            }

            //se cargan en la tabla los datos basicos de los estudiantes
            while (i < estudiantes.Count)
            {
                TableRow registroTabla = new TableRow();
                TablaHorario.Rows.Add(registroTabla);

                TableCell celdaTabla = new TableCell();
                registroTabla.Cells.Add(celdaTabla);
                celdaTabla.HorizontalAlign = HorizontalAlign.Center;
                System.Web.UI.WebControls.Label labelRegistro = new Label();
                labelRegistro.Text = Convert.ToString(estudiantes[i].Cedula);
                celdaTabla.Controls.Add(labelRegistro);

                TableCell celdaTabla2 = new TableCell();
                registroTabla.Cells.Add(celdaTabla2);
                celdaTabla2.HorizontalAlign = HorizontalAlign.Center;
                System.Web.UI.WebControls.Label labelRegistro2 = new Label();
                labelRegistro2.Text = estudiantes[i].Nombre;
                celdaTabla2.Controls.Add(labelRegistro2);

                TableCell celdaTabla3 = new TableCell();
                registroTabla.Cells.Add(celdaTabla3);
                celdaTabla3.HorizontalAlign = HorizontalAlign.Center;
                System.Web.UI.WebControls.Label labelRegistro3 = new Label();
                labelRegistro3.Text = estudiantes[i].Apellido;
                celdaTabla3.Controls.Add(labelRegistro3);

                List<decimal> promedios = new List<decimal>();
                List<decimal> notasTotales = new List<decimal>();
                //se consultan las notas del estudiante que esta siendo agregado a la tabla
                notasTotales = reporte.ConsultarNotasAlumno(estudiantes[i].IdEst,notasConsultadas);
                int j = 0;

                //se cargan en la tabla cada una de las notas del estudiante
                while (j < notasTotales.Count )
                {
                    TableCell celdaTabla4 = new TableCell();
                    registroTabla.Cells.Add(celdaTabla4);
                    celdaTabla4.HorizontalAlign = HorizontalAlign.Center;
                    System.Web.UI.WebControls.Label labelRegistro4 = new Label();
                    labelRegistro4.Text = Convert.ToString(notasTotales[j]);
                    celdaTabla4.Controls.Add(labelRegistro4);
                    promedios.Add(notasTotales[j]);
                    j++;
                }

                if (!notasTotales.Count.Equals(0))
                {
                    TableCell celdaTabla5 = new TableCell();
                    registroTabla.Cells.Add(celdaTabla5);
                    celdaTabla5.HorizontalAlign = HorizontalAlign.Center;
                    System.Web.UI.WebControls.Label labelRegistro5 = new Label();
                    labelRegistro5.Text = Convert.ToString(reporte.CalcularDefinitivaAlumnos(notasConsultadas, notasTotales));
                    celdaTabla5.Controls.Add(labelRegistro5);
                }
                i++;
            }
        }

        /// <summary>
        /// Se imprime la informacion de la pagina
        /// </summary>
        protected void Button1_Click(object sender, EventArgs e)
        {
            Session["ctrl"] = Panel1;
            LlenarCabecerasTabla();
            CargarAlumnos();
            ClientScript.RegisterStartupScript(this.GetType(), "onclick", "<script language=javascript>window.open('ImprimirReporte.aspx','PrintMe','height=500px,width=500px,scrollbars=1');</script>");

        }

        /// <summary>
        /// Se devuelve a la pagina seleccion de reporte
        /// </summary>
        protected void Button3_Click(object sender, EventArgs e)
        {
            Response.Redirect("ReporteSeleccion.aspx");

        }
    }
}